负载均衡简介
本文整理智简魔方云平台中“负载均衡简介”相关的配置、操作或问题处理内容,供管理员和运维人员按原文步骤查阅与执行。
1、什么是负载均衡
负载均衡(简称:SLB)是将访问流量根据分配策略分发到后端多台服务器的流量分发控制服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,同时通过消除单点故障提升应用系统的可用性。
如下图所示,负载均衡将访问流量分发到后端六台应用服务器,每个应用服务器只需分担三分之一的访问请求。同时,结合健康检查功能,流量只分发到后端正常工作的服务器,从而提升了应用系统的可用性。

2、负载均衡网络类型
负载均衡器分为公网负载均衡器和私网负载均衡器。
- 公网负载均衡器:负责处理来自公网访问请求分发的负载均衡实体。
公网负载均衡器接收公网的访问请求,然后向绑定了监听器的后端服务器分发这些请求。创建公网负载均衡器时,需要为负载均衡器创建 EIP 或者绑定已有的 EIP 。公网负载均衡器支持接收来自公网的 HTTP 和 HTTPS 等请求转发。同时支持会话保持、健康检查和访问控制等所有负载均衡提供的功能。
可以为一个公网负载均衡器添加多个监听器,来处理不同类型的转发请求。
- 私网负载均衡器:负责处理同一个 VPC 内访问请求的负载均衡实体。
私网负载均衡器只能在 VPC 内部被访问,不能被 Internet 的公网用户访问。私网负载均衡通过对应的私有 IP 将来自同一个 VPC 内的访问请求分发到后端服务器上。
创建负载均衡器后,您还需要在负载均衡器中添加监听器和后端服务器,然后才能使用负载均衡服务提供的功能。
3、负载均衡所需组件
**负载均衡器:**接受来自客户端的传入流量并将请求转发到同个 VPC 中的后端服务器。
**监听器:**您可以向您的负载均衡器添加一个或多个监听器。监听器使用您配置的协议和端口检查来自客户端的连接请求,并根据您定义的分配策略将请求转发到一个后端服务器组里的后端服务器。
**后端服务器:**每个监听器会绑定一个或多个后端服务器。客户端使用您指定的协议和端口号将请求转发到一个或多个后端服务器。可以为后端服务器配置流量转发权重。
**健康检查:**您可以开启健康检查功能,对每个后端服务器运行状况检查。当后端某台服务器健康检查出现异常时,负载均衡会自动将新的请求分发到其它健康检查正常的后端服务器上;而当该后端服务器恢复正常运行时,负载均衡会将其自动恢复到负载均衡服务中。

4、什么是监听器
创建负载均衡器后,需要为负载均衡器配置监听器。监听器负责监听负载均衡器上的请求,根据配置的调度算法,分发流量到后端服务器处理。
支持的协议类型:
SLB 目前支持七层能力的负载均衡,在创建监听器时,可供选择 HTTP 或者 HTTPS.
5、什么是转发规则
负载均衡器会将客户端的请求转发给后端服务器处理。例如,您可以添加魔方云实例作为负载均衡器的后端服务器,监听器使用您配置的协议和端口检查来自客户端的连接请求,并根据您定义的分配策略将请求转发到后端服务器组里的后端云服务器。
配置后端服务器之后,健康检查开启,负载均衡器会向后端服务器发送请求以检测其运行状态,响应正常则直接上线,响应异常则开始健康检查机制定期检查,检查正常后上线。
6、什么是健康检查
负载均衡器会定期向后端服务器发送请求以测试其运行状态,这些测试称为健康检查。
通过健康检查来判断后端服务器是否可用。负载均衡器如果判断后端服务器健康检查异常,就不会将流量分发到异常后端服务器,而是分发到健康检查正常的后端服务器,从而提高了业务的可靠性。当异常的后端服务器恢复正常运行后,负载均衡器会将其自动恢复到负载均衡服务中,承载业务流量。
TCP 健康检查
对于七层(HTTP/HTTPS)监听器,您可以配置 TCP 健康检查,通过发起 TCP 三次握手来获取后端服务器的状态信息。
TCP 健康检查的机制如下:
-
SLB 节点根据健康检查配置,向后端服务器(IP+健康检查端口)发送 TCP SYN 报文。
-
后端服务器收到请求报文后,如果相应的端口已经被正常监听,则会返回 SYN+ACK 报文。
-
如果在超时时间内没有收到后端服务器的 SYN+ACK 报文,则判定健康检查失败。然后发送 RST 报文给后端服务器中断 TCP 连接。
-
如果在超时时间内收到了 SYN+ACK 报文,则发送 ACK 给后端服务器,判定健康检查成功,并发送 RST 报文给后端服务器中断 TCP 连接。
须知:
正常的 TCP 三次握手后,会进行数据传输,但是在健康检查时会发送 RST 中断建立的 TCP 连接。该实现方式可能会导致后端服务器中的应用认为 TCP 连接异常退出,并打印错误信息,如“Connection reset by peer”。解决方案如下:
1)采用 HTTP 方式进行健康检查。
2)后端服务器忽略健康检查的连接错误。
HTTP 健康检查
您可以配置 HTTP 健康检查,通过 HTTP GET 请求来获取状态信息。对于 HTTPS 监听器,由于负载均衡器对 TLS 协议进行了卸载,负载均衡器与后端服务器之间使用 HTTP 传输,健康检查也采用 HTTP 方式,以提高系统的性能。
具体机制如下:
-
七层 SLB 节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发出 HTTP GET 请求(可以选择设置域名)。
-
后端服务器收到请求后,根据服务的情况返回相应的 HTTP 状态码。
-
如果七层 SLB 节点在响应超时时间内收到了后端服务器的响应,将 HTTP 状态码与预置的状态码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。
-
如果七层 SLB 节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。